package part1.chapter6_practice;

/**
 * Created by lie on 2018/3/9.
 *  我们先不考虑补中和全中的情况
 *
 *  那需求就很明确，分数就是每次投掷数量的累计
 */
public class Game1 {
    private int score;

    public int getScore(){
        //根据投掷数量，决定分数
        return this.score;
    }

//    public void add(int balls){
//        score += balls;
//    }


    public void add(int balls){
//        theThrows[?] = balls;注意到这里写不下去了，所以还需要一个变量来维护当前下标，表示当前投掷
        theThrows[currentThrows++] = balls;
        score += balls;
    }


    /**
     * 为了得到任意一格的分数，我们明显需要记录每一次投掷
     * {@link #add(int)}的数量
     * 那引入一个数组
     * @see #theThrows
     * 并且对
     * @see #add(int) 进行修改；
     *
     * 最后可以粗暴的遍历{@link #theThrows}的值，记得得到分数
     * @param frame
     * @return
     */
    public int getScoreByFrame(int frame){
        int score = 0;
        for (int currentThrows=0; frame> 0 ;frame--){
            int firstThrow = theThrows[currentThrows++];
            int secondThrow = theThrows[currentThrows++];
            score += firstThrow + secondThrow;
        }
        return score;
    }

    private int[] theThrows = new int[21];//21代表一场game里，可能的最多的投掷次数
    private int currentThrows = 0;

}
